# -*- coding: utf-8 -*-
from djtools.utils import rtr
from helpdesk.forms import HistoricoOcorrenciaForm
from helpdesk.models import Ocorrencia, Categoria, OcorrenciaStatus
from helpdesk.relatorio import RelatorioOcorrenciaForm, OcorrenciaView
from comum.models import Setor

@rtr()
def historico_ocorrencia(request):
    form = HistoricoOcorrenciaForm(request.GET or None)
    if form.is_valid():
        numero_patrimonio = form.cleaned_data['numero_patrimonio']
        ocorrencias = Ocorrencia.objects.filter(campo_busca__icontains=numero_patrimonio)
    return locals()

@rtr()
def detalhe_ocorrencia(request, obj_id):
    ocorrencia = Ocorrencia.objects.get(id=obj_id)
    return locals()

# RELATORIOS #

@rtr()
def relatorio_ocorrencias(request):
    form = RelatorioOcorrenciaForm(request.GET or None)
    if form.is_valid():
        
        status = form.cleaned_data['status']
        categoria = form.cleaned_data['categoria']
        setor = form.cleaned_data['setor']
        numero_patrimonio = form.cleaned_data['numero_patrimonio']
        agrupamento = form.cleaned_data['agrupamento']
        
        ocorrencias = Ocorrencia.objects.all()
        
        if status:
            ocorrencias = ocorrencias.filter(status=status)
        if categoria:
            ocorrencias = ocorrencias.filter(categoria=categoria)
        if setor:
            ocorrencias = ocorrencias.filter(setor=setor)
        if numero_patrimonio:
            ocorrencias = ocorrencias.filter(numero_patrimonio__icontains=numero_patrimonio)
        if agrupamento:
            dic = dict()
            if agrupamento == 'status':
                for s in OcorrenciaStatus.objects.all():
                    dic.update({s.nome:ocorrencias.filter(status=s).count()})
            if agrupamento == 'categoria':
                for s in Categoria.objects.all():
                    dic.update({s.nome:ocorrencias.filter(categoria=s).count()})
            if agrupamento == 'setor':
                for s in Setor.objects.all():
                    dic.update({s.sigla:ocorrencias.filter(setor=s).count()})    
        
        if request.GET.has_key('pdf'):
            return OcorrenciaView(request, ocorrencias)
            
    return locals()